-- title: My Silly Little Duck Game
-- author: Tomato Meyers, email, etc.
-- desc: short description
-- site: website link
-- license: MIT License (change this to your license of choice)
-- version: 0.1
-- script: lua
--Thomas Meyers
function GetDistance( x1, y1, x2, y2 )
return math.sqrt( ( x2 - x1 )^2 + ( y2 - y1 )^2 )
end
t=0
x=96
y=24
mapX = 90
mapY = 52
Ducklook=257
Health=5
WantedLevel = 0
playerX = 100
playerY = 100
HumanX = 100
HumanY = 100
HumanLook = 448
HumanFrame = 0
HumanFrameMax = 4
HumanHealth = 5
PoliceCalled = false
PoliceCalled2 = false
PoliceCalled3 = false
PgoalX=0
PgoalY=0
countdown = 0
countdown2 = 0
goalX=0
goalY=0
pVelX=0; pVelY=0
bx=-100; by=-100; bVelX=0; bVelY=0
FeatherLook = 262
frames = {448, 450, 452, 454}
--Humans
enemies = {
{ mapX=60, mapY=52,
x=50, y=100, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=60, mapY=52,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=0, mapY=52+16,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=0, mapY=52+16,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=0, mapY=52+16,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=120, mapY=20,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=150, mapY=36,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
{ mapX=150, mapY=36,
x=150, y=70, img=448,
spd=0.5, alive=true,
goalX=0, goalY=0, countdown=0, countdown2=0,
frame=0, frameMax=4, offset=0, HumanHealth=5,
behavior="random"
},
}
function TIC()
--randY = math.random(0, 136)
--randX = math.random(0, 240)
map(mapX, mapY)
print(Health, 230, 2, 2)
print(WantedLevel, 2, 2, 15)
if btn(0) then playerY=playerY-1 Ducklook=259 end
if btn(1) then playerY=playerY+1 Ducklook=260 end
if btn(2) then playerX=playerX-1 Ducklook=258 end
if btn(3) then playerX=playerX+1 Ducklook=257 end
spr(Ducklook, playerX, playerY,0)
-- HumanFrame = HumanFrame + .1 -- Increment animation frame
-- if HumanFrame >= HumanFrameMax then -- Reset back to 0 at the end
-- HumanFrame = 0
-- end
-- thisFrame = math.floor(HumanFrame) + 1
-- spr(frames[thisFrame], HumanX-4, HumanY-4, 0)
-- spr(frames[thisFrame]+1, HumanX+4, HumanY-4, 0)--HumanX+4, HumanY-4, 0)
-- spr(frames[thisFrame]+16, HumanX-4, HumanY+4, 0)--HumanX-4, HumanY+4, 0)
-- spr(frames[thisFrame]+17, HumanX+4, HumanY+4, 0)--HumanX+4, HumanY+4, 0)
if goalX < HumanX then
HumanX = HumanX - 1 -- Goal is to the left
elseif goalX > HumanX then
HumanX = HumanX + 1 -- Goal is to the right
end
if goalY < HumanY then
HumanY = HumanY - 1 -- Goal is above
elseif goalY > HumanY then
HumanY = HumanY + 1 -- Goal is below
end
--Explode
if btn(6) then Ducklook=273 mapX = 90 mapY = 52 end
if playerX > 240 then -- Off right side
mapX = mapX + 30 -- Move the map
playerX = 0 -- Reset player position
elseif playerX < -8 then -- Off left side
mapX = mapX - 30 -- Move the map
playerX = 240-8 -- Reset the player position
end
if playerY > 136 then -- Off right side
mapY = mapY + 16 -- Move the map
playerY = 0 -- Reset player position
elseif playerY < 1 then -- Off left side
mapY = mapY - 16 -- Move the map
playerY = 136-8 -- Reset the player position
end
if countdown > 0 then -- Countdown timer
countdown = countdown - 1
end
if countdown == 0 then
-- Do some action once timer is 0
if behavior =="random" then
goalX = math.random(0,240)
goalY = math.random(0,136)
countdown = math.random(50,100)
end
end
--Pew Pew
if btn(0) then FeatherLook = 263 pVelX=0; pVelY=-1 end
if btn(1) then FeatherLook = 263 pVelX=0; pVelY=1 end
if btn(2) then FeatherLook = 262 pVelX=-1; pVelY=0 end
if btn(3) then FeatherLook = 262 pVelX=1; pVelY=0 end
if btn(7) and bx==-100 then
-- Put bullet "on" us
bx=playerX; by=playerY
-- Set bullet direction
bVelX=pVelX*2; bVelY = pVelY*2
end
if bx ~= -100 then -- Is bullet visible?
bx=bx+bVelX -- Move bullet based on horizontal velocity
by=by+bVelY -- Move bullet based on vertical velocity
end
-- If it goes off screen, disable bullet
if bx < -20 or bx > 240 or by < -20 or by > 136 then
bx = -100
end
--spr(256,playerX,playerY,0)
spr(FeatherLook,bx,by,0)
-- HANDLE ARRAY OF ENEMIPoliceCalledES -----------
for id,en in pairs(enemies) do
-- Workaround
if en.goalY == nil then
en.goalY = 0
end
if en.alive == true then
en.frame = en.frame + .1 -- Increment animation frame
if en.frame >= en.frameMax then -- Reset back to 0 at the end
en.frame = 0
end
thisFrame = math.floor(en.frame) + 1
-- Only use enemy if it's on the current map
if mapX== en.mapX and mapY == en.mapY then
print(en.HumanHealth,en.x+4,en.y-11,12)
spr(frames[thisFrame]+en.offset, en.x-4, en.y-4,0)
spr(frames[thisFrame]+en.offset+1, en.x+4, en.y-4,0)
spr(frames[thisFrame]+en.offset+16, en.x-4, en.y+4,0)
spr(frames[thisFrame]+en.offset+17, en.x+4, en.y+4,0)
if en.goalX == nil then en.goalX = 0 end
if en.goalY == nil then en.goalY = 0 end
if en.goalX < en.x then
en.x = en.x - 1 -- Goal is to the left
elseif en.goalX > en.x then
en.x = en.x + 1 -- Goal is to the right
end
if en.goalY < en.y then
en.y = en.y - 1 -- Goal is above
elseif en.goalY > en.y then
en.y = en.y + 1 -- Goal is below
end
if en.countdown > 0 then -- Countdown timer
en.countdown = en.countdown - 1
end
if en.countdown == 0 then
sfx(0,"C-4",10)
-- Do some action once timer is 0
if en.behavior == nil or en.behavior == "random" then
en.goalX=math.random(0,240)
en.goalY=math.random(0,136)
else
en.goalX = playerX
en.goalY = playerY
end
en.countdown=math.random(50,100)
end
if en.countdown2 > 0 then -- Countdown timer
en.countdown2 = en.countdown2 - 1
end
if en.countdown2 == 0 then
-- Do some action once timer is 0
en.countdown2=math.random(100,200)
end
end
if en.goalX == nil then en.goalX = 0 end -- try to fix
if en.goalY == nil then en.goalY = 0 end -- try to fix
end
-- scoring and wanted System
dist = GetDistance(en.x,en.y,bx,by)
if dist <= 8 then
WantedLevel = WantedLevel + 1
en.HumanHealth = en.HumanHealth - 1
HumanLook = 456
en.countdown2 = 100
bx = -200
by = -200
end
if en.HumanHealth <=0 then
en.x = -37000
en.y = -37000
en.HumanHealth = 0
end
end
--THE PO-PO!!! :0
if WantedLevel == 5 and PoliceCalled == false then
newen = {
mapX=mapX, mapY=mapY,
x=0, y=0, img=480,
spd=0.5, alive=true,
goalX=PlayerX, goalY=PlayerY,
countdown=0, countdown2=0,
frame=0, frameMax=4,
behavior="followplayer",
offset=32,
HumanHealth=10
}
table.insert(enemies, newen)
PoliceCalled=True
end
if WantedLevel == 15 and PoliceCalled2 == false then
newen ={mapX=mapX, mapY=mapY,
x=0, y=0, img=480,
spd=0.5, alive=true,
goalX=PlayerX, goalY=PlayerY,
countdown=0, countdown2=0,
frame=0, frameMax=4,
behavior="followplayer",
offset=32,
offset=32,
HumanHealth=10
}
newen ={mapX=mapX, mapY=mapY,
x=0, y=0, img=480,
spd=0.5, alive=true,
goalX=PlayerX, goalY=PlayerY,
countdown=0, countdown2=0,
frame=0, frameMax=4,
behavior="followplayer",
offset=32,
offset=32,
HumanHealth=10
}
table.insert(enemies, newen)
PoliceCalled2=True
--en.PgoalX=PlayerX
--en.PgoalY=PlayerY
--if behavior=="followplayer" then
--goalX = PlayerX;
--goalY = PlayerY
--end
end
print(mapX..","..mapY, 2, 129, 12)
end
--
-- 001:6666666666666666666666666666666666666666666666666666666666666666
-- 002:666666666ccccccc6c4444446c4444446c4444446c4444446c4444cc6c4444c6
-- 003:6c4444c66c4444c66c4444c66c4444c66c4444c66c4444c66c4444c66c4444c6
-- 004:66666666cccccccc44444444444444444444444444444444cccccccc66666666
-- 005:4c4444c44c4444c44c4444c44c4444c44c4444c44c4444c44c4444c44c4444c4
-- 006:6666666666666666ddeee666de3ff666e333f666effff66666f6666666f66666
-- 008:6666666666626666666226666624422662244266666226666666266666666666
-- 015:3333333334444443344444433444444334444443344444433444444333333333
-- 016:6644643644554443644444644543444464343454644445444544455464536446
-- 017:4444444444444444444444444444444444444444444444444444444444444444
-- 018:4444444444434444433434444444444444444444444434444443433444444444
-- 019:6c4444c6cc4444c6444444c6444444c6444444c6444444c6cc4444c66c4444c6
-- 020:6c4444c6cc4444cc44444444444444444444444444444444cccccccc66666666
-- 021:6c4444c6cc4444cc44444444444444444444444444444444cc4444cc6c4444c6
-- 022:6666666666666666ddeee666de7ff666e777f666effff66666f6666666f66666
-- 024:6666661662666141242666166266666666666666666663666666343666666366
-- 026:2362022323360202000600002022262220022222000006602032263262232032
-- 033:aaaaaaaaaa9aaaaaa9a9aaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa9a9aaaaaaaa
-- 038:6666666666666666ddeee666de4ff666e444f666effff66666f6666666f66666
-- 040:6666666665666656656666666666566666665666666666566656666666566666
-- 042:2322022323320222000000002022222220222222000000002232203222232032
-- 043:cccdc0ccccdcc0cc00000000cc0ccddccc0cccdc00000000cdccc0cccdccc0cc
-- 044:4444444464444446444444464444444464444446644444444444444664444444
-- 049:aaaaaaaaaaaa9aaaaaa9a9aaaaaaaaaaaaaaaaaaaa9aaaaaa9a9aaaaaaaaaaaa
-- 054:6666666666666666ddeee666deaff666eaaaf666effff66666f6666666f66666
-- 056:6666666665666656656666666665566666656656666666566656666666566666
-- 058:0ddddddd0ddddddd0ddccccc0ddccccc0dcccccc0dcccccc0dcccccc0ddddddd
-- 059:0ed6dddd0de66dd60ddc6ccc0edccccc0dcccccc0dcccccc0dcccccc06d6ed66
-- 060:000000000ddcccc00dccccc00cccccc00cccccc00cccccd00ccccdd000000000
-- 065:aaaaaaaaaaaaaaaaaaaaaaaaaaa9aaaaaa9a9aaaaaaaaaaaaaaaaaaaaaaaaaaa
-- 066:aaaaaaaaaaaaaaaaaaa5aaaaaa566aaaaa5666aaaa666aaaaaaaaaaaaaaaaaaa
-- 072:6665666555656556655666566666666656566665566655666665566565566566
-- 074:0ddddddd0ddddddd0ddddddd0dddddee0dddddee0ddddddd0ddddddd0ddddddd
-- 075:0dd6de6d0dddd6dd0ddedddd0dddddff0dddddff0d66dddd0dd6ddde0ddd6ded
-- 081:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-- 082:5a66aa66aaaaaaa56aaaaaaaaaaaaaa6aaaaaaaaaaaaaaa66aaaaaa565aaaaaa
-- 083:5a66aa66aaaa6aa56aaaaa6a6aaaaaa6aaaaaaaaa6aaaaa66aaa56a565aaa66a
-- 113:1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-- 114:6565656556565656656565655656565665656565565656566565656556565656
-- 115:151115155b5b5b51151515b51b5b51511515b5b15b51515115b5b5b551511151
-- 116:151115155b5b5b511b1515b55b5b51b11515b5b55b51515115bbb5b111515151
-- 117:6666666666666666666616666611666611661666666666666666666666666666
-- 118:6666666666666666666666666666666666611666666661116666666666666666
-- 145:cccccccc00ccc00c000ccccccccccccccc00ccc0cccccc00ccccccccc00ccccc
-- 146:6464646446464646646464644646464664646464464646466464646446464646
-- 147:c4cc04c44c4c4c4cc4c4c4c4004c4c4c04c4c4cc4c4c4c40c4c404c44c400c4c
-- 148:c4cc04044c4c4c4c04c4c4c4cc4c4c4cc4c4c4004c4c4c40c4c4c4c44c400c4c
-- 149:66666666666666666666c66666cc6666cc66c666666666666666666666666666
-- 150:66666666666666666666666666666666666cc66666666ccc6666666666666666
-- 177:bbbbbb111b1bbbbbb1bbb111bbbb1bbb11bbbbbbbbbbb1b1111bbb1bbbb1bbbb
-- 178:4545454554545454454545455454545445454545545454544545454554545454
-- 179:151115155b5b5b51151515b51b5b51511515b5b15b51515115b5b5b551511151
-- 180:151115155b5b5b511b1515b55b5b51b11515b5b55b51515115bbb5b111515151
-- 181:6666666666666666666616666611666611661666666666666666666666666666
-- 182:6666666666666666666666666666666666611666666661116666666666666666
--
--
-- 001:23300000024f00000300f0000008880000088330088888000888880008888800
-- 002:000003320000f420000f00300088800003388000008888800088888000888880
-- 003:00030200002f43200000f0000088880000888800008888000088880000888800
-- 004:0002030000234f200000f0000088880000888800008338000088880000888800
-- 006:0000000000000000000000008888888008888888000000000000000000000000
-- 007:0008000000088000000880000008800000088000000880000008800000008000
-- 017:0003200000323b322344330003bc4430b34c433b2343430233b3202000020000
-- 192:0000ffff0000feff0000feef0000fefe000ffeef000feefe000fefef000feeff
-- 193:fffffffff00fefeff000fefff000ffeff000fefff000feff0000feef0000feef
-- 194:000fffff000ffeff00ffefff00fefef000feeff00feefef00feeff00feefff00
-- 195:ffffffff00ffefef000feeff000fefef000feeff000feeff000feeef000feeef
-- 196:0000ffff0000fefe0000feef0000fefe000ffeef000feefe000fefef000feeff
-- 197:fffffffff00ffefff000ffeff000fefff000ffeff000feff0000feff0000feef
-- 198:00000fff00000fef00000ffe00000fef0000ffee0000feef0000feef0000feee
-- 199:ffffffffefffefefffffefffeffefef0fffeeff0effeff00f0feff00f0feef00
-- 200:00002eee00002eee00002eee00002eee00022eee0002eeee0002eee20002eee2
-- 201:2222eee22002eee220002ee220002ee220002ee220002ee200002ee200002ee2
-- 208:000feeef000feeef000feeef00ffeeef00feeeff00feeef00feeeef0fffffff0
-- 209:0000feef000feeef000feeef000feeef000feeef000feeef00feeeef0fffffff
-- 210:feeeeef0feeeeeff0feeeeef00feeeef000ffeef00000fef000000ff00000000
-- 211:000feeef000feeef00feeeef00feeeef00feeeef00feeeef0feeeeefffffffff
-- 212:000feeff000feeef000feeef00ffeeef00feeeff00feeef00feeeef0fffffff0
-- 213:0000feef000feeef000feeef000feeef000feeef000feeef00feeeef0fffffff
-- 214:0000feee0000feee0000feee00ffeeee00feeeef00feeeef0feeeeefffffffff
-- 215:f0feeef0f0feeefff0ffeeeff00feeeff00ffeef0000feef00000fef00000fff
-- 216:0002eee20002eee20002eee20022eee2002eee22002eee2002eeee2022222220
-- 217:00002ee20002eee20002eee20002eee20002eee20002eee2002eeee202222222
-- 224:0000ffff0000f9f90000f9990000f999000ff999000f2299000f992f000f999f
-- 225:fffffffff00fef9ff000f99ff000f99ff000f99ff000f99f0000f99f0000f99f
-- 226:000fffff000f99ff00ff99ff00f299f000f922f00f9999f00f999f00f9992f00
-- 227:ffffffff00ff9f9f000f999f000f999f000f999f000f999f000f999f000f999f
-- 228:0000ffff0000f9f90000f9990000f999000ff999000f2299000f992f000f999f
-- 229:fffffffff00ff9fff000f99ff000f99ff000f99ff000f99f0000f99f0000f99f
-- 230:00000fff00000f9f00000f9900000f990000ff990000f2290000f9920000f999
-- 231:ffffffff9fff9fef9fff99ff9ff299f09ff922f09ff99f00f0f99f00f0f92f00
-- 232:0000299900002999000029990000299900022229000299920002999200029992
-- 233:2222999220029992200029922000299220002992200029920000299200002992
-- 240:000f999f000f999f000f999f00ff999f00f222ff00f999f00f9999f0fffffff0
-- 241:0000f22f000f999f000f999f000f999f000f999f000f222f00f9999f0fffffff
-- 242:f92299f0f29999ff0f99929f00f9929f000ff29f00000f9f000000ff00000000
-- 243:000f999f000f222f00f9999f00f9999f00f9999f00f2222f0f99999fffffffff
-- 244:000f999f000f999f000f999f00ff222f00f999ff00f999f00f9999f0fffffff0
-- 245:0000f22f000f999f000f999f000f999f000f999f000f222f00f9999f0fffffff
-- 246:0000f9990000f9990000f99900ff999900f2222f00f9999f0f99999fffffffff
-- 247:f0f299f0f0f999fff0ff929ff00f929ff00ff29f0000f29f00000f9f00000fff
-- 248:0002999200029992000299920022999200222222002999200299992022222220
-- 249:0000222200029992000299920002999200029992000222220029999202222222
--
--
--
-- 000:00000000ffffffff00000000ffffffff
-- 001:0123456789abcdeffedcba9876543210
-- 002:0123456789abcdef0123456789abcdef
--
--
-- 001:b200b200b200b200b200a200a200a200a200a200a200a200a200a200a200b200b200b200b200b200b200b200a200a200a200a200a200a200a200a200009000000000
--
--
-- 000:811204100000b00004700004d00204100000600008d00006c00006b00006c00006100000400206000000000000400008f00008d00008b00008a00008b00008c00008000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 001:800004100000800004100000800004100000800004100000800004100000800004100000800004100000800004100000800004100000800004100000800004100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 002:800004a00004c00004100000000000800004a00004c00004100000800004a00004c00004100000800004a00004c00006100000800006a00006c00006100000800004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 003:000000000000000000000000000000000000400002500002400002700002400002900002400002b00002400002d00002e00002f00002100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
--
--
-- 000:180301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eca200
--
--
-- 000:1a1c2c482800b13e53ef7d57ffcd75a7f07038b764257179ffba3c3b5dc941a6f65d4428f4f4f494b0c2566c86333c57
--